package com.xd.study.activity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewStub;
import android.widget.Button;
import android.widget.TextView;

import com.xd.study.R;

/**
 * Created by DGF on 2015/4/29.
 *  * 布局优化 -- include
 * 将可服用的组件抽取出来单独放到一个xml文件中，然后使用include标签导入布局；
 * 提高UI的制作和复用效率，也能保证制作的UI布局更加规整和易维护。
 *  * 布局优化 -- Merge
 * 使用merge合并UI布局，降低UI布局的嵌套层次；
 * 场景一：布局根节点是FrameLayout且不需要设置background或padding等属性，可以用merge代替；
 * 场景二：某布局作为子布局被其他布局include时，使用merge当作该布局的顶节点，这样在被引入时顶节点会自动被忽略；
 *  * 布局优化 -- ViewStub
 * 使用ViewStub惰性加载
 * ViewStub标签同include标签一样可以引入一个外部布局，不同的是，
 * ViewStub标签引入的布局默认不会扩张，既不会占用显示也不会占用位置，
 * 从而在解析layout时节省cpu和内存。
 */
public class LayoutOptimizeActivity extends Activity {

    private ViewStub viewStub;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_optimize);

        /**
         * 可直接访问include加载的布局文件中的控件
         */
        TextView title = (TextView)this.findViewById(R.id.title_layout_center_text);
        title.setText("自定义标题");

        /**
         * 隐藏时不加在ViewStub的内容；
         * 显示隐藏内容时，开始加载ViewStub包裹的内容
         */
        Button btnShow = (Button)this.findViewById(R.id.layout_optimize_btn_show);
        viewStub = (ViewStub)this.findViewById(R.id.viewstub);

        btnShow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewStub.inflate();
            }
        });

    }
}
